// 对Date的扩展，将 Date 转化为指定格式的String  
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，  
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)  
// 例子：  
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423  
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18  
const FormatDate = (curdate, fmt) => { //author: meizz  
  //console.info('curdate', '[' + curdate + ']')
  let dateObj;
  if (typeof curdate === 'string') {
    curdate = curdate.replace(/-/g, "/")
    dateObj = new Date(curdate)
  }
  //console.info('dateObj', dateObj)
  let o = {
    "M+": dateObj.getMonth() + 1,                 //月份  
    "d+": dateObj.getDate(),                    //日  
    "h+": dateObj.getHours(),                   //小时  
    "m+": dateObj.getMinutes(),                 //分  
    "s+": dateObj.getSeconds(),                 //秒  
    "q+": Math.floor((dateObj.getMonth() + 3) / 3), //季度  
    "S": dateObj.getMilliseconds()             //毫秒  
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.$1, (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (let k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

export default FormatDate;